Q. 이벤트 루프의 동작 방식을 마이크로태스크, 매크로태스크를 포함하여 설명하세요.
🧑🏻💻 Answer.
✅ 태스크 큐
태스크 큐와 이벤트 루프는 멀티 스레드의 구동 환경이 싱글 스레드인 JS 엔진과 연동하기 위해 사용되는 장치입니다.
이때 태스크 큐는 구체적으로 마이크로 태스크큐(Event Queue) 와 매크로 태스크 큐(Job Queue) 로 나뉘어집니다.
✅ 태스크 큐
마이크로태스크 큐는 매크로 태스크보다 우선순위가 높습니다.
따라서 이벤트 루프는 콜 스택이 비면 마이크로태스크 큐에 대기 중인 함수를 먼저 콜 스택으로 이동 시키고, 마이크로태스크 큐가 비면 태스크 큐에서 대기하고 있는 함수를 콜 스택으로 이동 시키며 동작합니다.
✅ 예시
console.log('script start'); // A
setTimeout(function () { // B
console.log('setTimeout');
}, 0);
Promise.resolve()
.then(function () { // C
console.log('promise1');
})
.then(function () { // D
console.log('promise2');
});
console.log('script end'); // E
/* 출력 결과
script start
script end
promise1
promise2
setTimeout
*/